import { ElMessage } from 'element-plus';
import other from '/@/utils/other';

const MESSAGE_TEXTS = {
	SAVE_SUCCESS: '保存成功',
	ID_CARD_PARSE_SUCCESS: '已自动填充出生日期、性别和年龄信息',
	ID_CARD_PARSE_ERROR: '身份证号码格式不正确',
} as const;

/**
 * 封装身份证号码解析和相关信息自动填充的逻辑
 * @returns 返回一个包含 parseAndFill 方法的对象
 */
export function useIdCardParser() {
	/**
	 * 解析身份证并填充数据
	 * @param idCardNo 身份证号码
	 * @param targetEntity 需要被填充数据的目标对象 (e.g., state.vmModel.Entity)
	 */
	const parseAndFill = (idCardNo: string, targetEntity: any) => {
		if (!idCardNo) {
			return; // 如果没有输入，则不做任何事
		}

		// 调用核心解析工具
		const result = other.parseIdCard(idCardNo);

		// 处理解析失败的情况
		if (!result.valid) {
			ElMessage.warning(result.message || MESSAGE_TEXTS.ID_CARD_PARSE_ERROR);
			return;
		}

		// 解构出需要的数据
		const { birthDate, gender, age } = result;

		// 使用解析出的数据更新目标对象
		// 这里做了非空判断，确保只在有数据时才覆盖
		if (birthDate) {
			targetEntity.BirthDate = birthDate;
		}
		if (gender) {
			targetEntity.Gender = gender === '男' ? '男' : '女';
		}
		if (age !== null && age !== undefined) {
			targetEntity.Age = Number(age);
		}

		// ElMessage.success(MESSAGE_TEXTS.ID_CARD_PARSE_SUCCESS);
	};

	// 返回这个方法，以便在组件中使用
	return {
		parseAndFill,
	};
}
